File:  of Tape: Original/Originals/m1
(Source file text) 

/WRITTEN OUT AS PART OF RECORD 0. WHEN THE 30 WORD
/BOOTSTRAP IS USED, THIS CODE GETS READ INTO 7400.



	SDSS=6771
	SDST=6772
	SDSQ=6773
	SDLC=6774
	SDLD=6775
	SDRC=6776
	SDRD=6777

TDBOOT,	TAD K7600	/128 WORDS PER PAGE
	DCA TDWCT
	SDSS		/WAIT FOR A BLOCK MARK (TAPE IS
	JMP .-1		/STILL MOVING)
	SDRC
	AND TD77
	TAD KM26	/IS IT A BLOCK MARK?
	SZA CLA
	JMP TDBOOT+2	/NO..WAIT A WHILE LONGER
	SDRD		/GET THE BLOCK NO.
TDBKNO,	TAD TDM14	/NEED BLOCKS 14&15 (REC. 6)
	SZA CLA
	JMP TDBOOT+2	/NOT YET, BUSTER
TDRGRD,	SDSS
	JMP .-1		/NOW LET'S LOOK FOR A REVERSE GUARD WORD
	SDRC
	AND TD77
	TAD KM32
	SZA CLA
	JMP TDRGRD	/KEEP LOOKING FOR IT
	JMS TDRQD
	JMS TDRQD
	JMS TDRQD	/SKIP CONTROL WORDS
	CDF 10		/LOAD UP FIELD 1
TDREAD,	JMS TDRQD	/GET A DATA WORD
	DCA I TDPTR
	ISZ TDPTR	/ARE WE DONE?
	JMP TDREAD	/NOT YET
	ISZ TDBKNO	/YES..LOOK AT BLOCK 15
	TAD KCDF20
	DCA TDREAD-1	/LOAD UP FIELD 2
	ISZ M2		/DONE THIS JUNK?
	JMP TDBOOT	/GO DO FIELD 2
	SDLC		/STOP THE TAPE
	CIF CDF 0
	JMP I K7605

TDM14,	-154
	-155	/USE RECORD 66
TDWCT,	7600
TDRQD,	0
	SDSQ
	JMP .-1
	SDRD
	JMP I TDRQD
TDPTR=TDWCT

K7600,	7600
KM26,	-26
KM32,	-32
KCDF20,	CDF 20
M2,	-2
K7605,	7605
TD77,	77
	>
/TD8E DECTAPE SYSTEM HANDLER
/THIS HANDLER CAN DRIVE UNITS 0&1, AND IS PERMANENTLY
/RESIDENT IN FIELDS 0&2.

	IFNZRO TD8ESYS <

	FIELD 0
	*6607
	NOPUNCH
	*7607
	ENPUNCH


SHNDLR,	0		/UNIT 0 ENTRY POINT
	CLA CLL
	JMP SHND2
C3,	3
S70,	70
SDTA1,	0		/UNIT 1 ENTRY
	CLA CLL CML
SC1000,	TAD SDTA1	/DOUBLES AS CONSTANT 1000
	DCA SHNDLR	/GET ARGS AT SHNDLR
SHND2,	RAR		/UNIT #
	DCA SUNIT
	RDF		/SETUP FOR EXIT
	TAD S6203
	DCA EFLD
	TAD I SHNDLR	/FUNCTION WORD
	SDLD		/PUT IT IN DATA EGISTER
	AND S70		/SDLD DOES NOT 0 AC..GET FIELD
	TAD S6203	/CIF CDF N FOR TRANSFER FIELD
	DCA TFLD
	ISZ SHNDLR
	TAD I SHNDLR	/BUFFER ADDRESS
	DCA BPTR
	ISZ SHNDLR
	TAD I SHNDLR	/BLOCK #. TIMES 2 FOR REAL #
	CLL RAL
	DCA BLOCK
	ISZ SHNDLR	/POINT TO ERROR EXIT
	CIF CDF 20	/PUT UNIT # INTO FIELD 2
	TAD SUNIT
	DCA I SUNIT2
	JMP F2SET	/TO FIELD 2 FOR INIT.

F1GO,	SDRD		/INITIAL DIRECTION TO LINK
	RAR
	JMP RGO

RENTER,	TAD BPTR	/DONE THIS BLOCK..NEXT ADDRESS
	TAD SC200
	DCA BPTR
	ISZ BLOCK	/NEXT TAPE BLOCK..CAN'T SKIP
	CLL CML		/FORCE FORWARD MOTION
RGO,	CLA CML RTR	/LINK TO MOTION BIT
	TAD SC1000
	TAD SUNIT
	SDLC		/MOVE THE TAPE
	SDSQ
	JMP .-1
	SDRD		/KNOCK DOWN QUAD FLAG
	SDSQ
	JMP .-1
	SDRD		/THIS IS NEEDED, ELSE TIME ERROR!!!

SRCH,	SDSS		/WAIT FOR A BLOCK MARK
	JMP .-1
	SDRC		/GET MARK TRACK BITS
	CLL RTL		/DIRECTION TO LINK
	AND SC374
	TAD SM110	/IS IT A N END ZONE?
	SNA
	JMP SENDZ	/YES
	TAD SM20	/MAYBE A BLOCK MARK?
	SZA CLA
	JMP SRCH	/NEITHER..KEEP GOING
	SDRD		/READ THE BLOCK #
	SZL		/IF REVERSE, LOOK 3 AHEAD OF TARGET
	TAD C3
	CMA
	TAD BLOCK
	CMA
	SNA		/IS IT THE RIGHT ONE?
	JMP FOUND	/YES
SM110,	CLA SNA SZL	/SNA SUPERFLUOUS..ONLY SZL VALID
	JMP SRCH	/HEADED FOR IT..KEEP GOING
SENDZ,	SDRC
	CLL RTL
	SZL CLA		/IF IN END ZONE FORWARD, GIVE ERROR
	JMP RGO
	CIF 20		/IF IT IS REALL END ZONE, AN ERROR
	JMP ERROR

FOUND,	SZL CLA		/RIGHT BLOCK..HOW ABOUT DIRECTION?
	JMP RGO		/WRONG..EXECUTE TURNAROUND
	TAD BPTR
TFLD,	HLT		/GETS CIF CDF N
	CIF 20
	JMP RDWT	/LET'S TRANSFER DATA

SEXIT,	ISZ SHNDLR	/NORMAL RETURN
SEREX,	TAD SUNIT	/STOP THE TAPE
	SDLC
	CML CLA RAR	/EITHER 0 OR 4000 IN AC ON RETURN
EFLD,	HLT
	JMP I SHNDLR

BPTR=7755
BLOCK=7754
SUNIT=SDTA1
S6203,	6203
SC200,	200
SC374,	374
SM20,	-20
SUNIT2,	SXUNIT

	FIELD 2
	*7600

XPTR,	0		/BUFFER POINTER
F2SET,	CLA CLL CMA RTL	/3 ERROR TRIES
	DCA TRYCNT
	TAD SXUNIT	/MAKE SURE TAPE IS STOPPED
	SDLC
F26203,	CIF CDF 0
	SDRD		/FUNCTION WORD
	CLL RAL
	AND CX7600	/PAGE COUNT
	DCA XPGCT
	SDRD
	DCA SXFUN	/SAVE THE FUNCTION WORD
	JMP F1GO

RDWT,	DCA XPTR	/SAVE NEW BUFFER ADDRESS
	TAD CX7600
	DCA XWCNT	/128 WORDS PER BLOCK
REVGRD,	SDSS		/WAIT FOR REVERSE GUARD WORD
	JMP .-1
	SDRC
	AND X77
	TAD XM32		/IS IT REVERSE GUARD?
	SZA CLA
	JMP REVGRD	/NO
	TAD SXFUN
SK7700,	SMA CLA		/READ OR WRITE?
	JMP READ		/READ
	SDRC
	AND C300	/ERRORS ON WRITE LOCKOUT AND TIME
	SZA CLA
	JMP ERROR
	JMS RDQUAD	/SKIP A WORD
CX7600,	7600
	TAD WRLP
	TAD SXUNIT
	SDLC		/TURN ON THE WRITE
	CLA CMA
	JMS WRQUAD	/WRITE 7777 IN REV. CHECKSUM
	CLA CMA
	DCA SCKSUM	/AND ALSO IN COMPUTE CHECKSUM
WRLP,	TAD I XPTR
	JMS WRQUAD	/WRITE THE DATA
	ISZ XPTR
X77,	77		/JUST IN CASE
	ISZ XWCNT	/DONE 128?
	JMP WRLP
	JMS WRQUAD	/WRITE AND CHECKSUM A WORD OF 0
	JMS GETCHK	/GET CHECKSUM
	JMS WRQUAD
	JMS WRQUAD	/LET CHECKSUM GET WRITTEN

RWCOM,	SDST		/CHECK FOR TIME AND CHECKSUM ERRORS
	SZA CLA
	JMP ERROR	/NOTE THAT LINK IS OFF AT RWCOM
	CIF CDF 0
	TAD XPGCT	/FINISHED TRANSFER?
	TAD CX7600	/LINK GOES ON HERE
	SNA
	JMP SEXIT	/YES..GETOUT
	DCA XPGCT
	JMP RENTER

READ,	JMS RDQUAD	/SKIP CONTROL WORDS
	JMS RDQUAD
	JMS RDQUAD	/GET CHECKSUM
	AND X77
	TAD SK7700
	DCA SCKSUM
SRDLP,	JMS RDQUAD
	DCA I XPTR
	TAD I XPTR
	JMS EQUFUN
	ISZ XPTR
C300,	300
	ISZ XWCNT	/DONE ALL?
	JMP SRDLP	/NO
	JMS RDQUAD	/READ AND CHECKSUM LAST WORD
	JMS EQUFUN
	JMS RDQUAD	/GET CHECKSUM
	AND SK7700
	JMS EQUFUN
	JMS GETCHK
	JMP RWCOM

ERROR,	CLA CLL		/THIS CAUSES SEARCH REVERSE AT RGO
	CIF CDF 0
	ISZ TRYCNT	/EXHAUSTED ERROR TRIES?
	JMP RGO
	JMP SEREX	/YES..FATAL EXIT

WRQUAD,	0		/WRITE A 12 BIT WORD
	SDSQ
	JMP .-1
	SDLD
	JMS EQUFUN
	JMP I WRQUAD

RDQUAD,	0		/READ A 12 BIT WORD
	SDSQ
	JMP .-1
	SDRD
	JMP I RDQUAD

EQUFUN,	0		/EQUIVALENCE CHECKSUM
	CMA
	DCA EQUTMP
	TAD EQUTMP
	AND SCKSUM
	CIA
	CLL RAL
	TAD EQUTMP
	TAD SCKSUM
	DCA SCKSUM
	JMP I EQUFUN

GETCHK,	0
	TAD SCKSUM
	CLL CMA RTL
	RTL
	RTL
	JMS EQUFUN
	TAD SCKSUM
	AND SK7700
	JMP I GETCHK

SXUNIT,	0
XPGCT,	0
SXFUN,	0
TRYCNT,	0
XWCNT,	0
XM32,	-32
SCKSUM,	0
EQUTMP,	0
	ZBLOCK 4	/USED BY BATCH MONITOR
	>>
	IFZERO TD8ESYS+LIST <XLIST>

/FOLLOWING IS THE BOOTSTRAP FOR THE TD8E 12K SYSTEM
	IFZERO TD8ESYS+LIST <XLIST>


/	*7300
/7300 1312	K1000,	TAD GET		/PUT DRIVE IN REVERSE
/7301 4312		JMS GET		/LOOK FOR END ZONE
/7302 4312		JMS GET		/LOOK FOR 31 CODE
/7303 6773	RD,	SDSQ		/NOW READ ALL WORDS INTO CORE
/7304 5303		JMP .-1
/7305 6777		SDRD		/READ 12 BIT WORD
/7306 3726		DCA I WCT	/AND PUT IT IN CORE
/7307 2326		ISZ WCT
/7310 5303		JMP RD		/LOOP UNTIL FIELD 0
/7311 5732		JMP I STRT	/IS LOADED, THEN START
/7312 2000	GET,	2000
/7313 1300		TAD K1000	/SET MOTION &DIRECTION
/7314 6774		SDLC
/7315 6771	BSRCH,	SDSS	/HERE WAIT FOR EITHER 22 OR 31 CODE
/7316 5315		JMP .-1		/22 IS END ZONE, 31 IS
/7317 6776		SDRC		/CODE BEFORE DATA WORD
/7320 0331		AND K77		/IS THIS WHAT WE WANT?
/7321 1327		TAD BM22	/THIS GETS INCREMENTED
/7322 7640		SZA CLA		/IF YES, RETURN.
/7323 5315		JMP BSRCH	/NO.KEEP LOOKING.
/7324 2321		ISZ .-3		/LOOK FOR NEXT IN LIST
/7325 5712		JMP I GET
/7326 7354	WCT,	7354	/START LOADING CORE AT 7354
/7327 7756	BM22,	-22	/THE OTHER BOOTSTRAP GETS LOADED
/7330 7747		-31	/AT 7400.
/7331 0077		77
/7332 7400	STRT,	7400



	FIELD 0
	IFZERO ROM+LIST <XLIST>
	IFNZRO ROM <
	RGO=7405
	F2SET=7552
	ROMFLD=70

	*6607
	NOPUNC
	*7607
	ENPUNC
/FOLLOWING IS CODE FOR 8K-ROM OS/8 SYSTEM.

SHNDLR,	0		/UNIT 0 ENTRY
	CLA CLL
	JMP SHND2
S70,	70
S6201,	6201
SDTA1,	0		/UNIT 1 ENTRY
	CLA CLL CML
	TAD SDTA1	/GET ARDGS AT SHNDLR
	DCA SHNDLR
SHND2,	RAR		/UNIT BIT IS ON LINC
	DCA SUNIT
	RDF
	TAD S6203	/SETUP RETURN FIELD
	DCA EFLD
	TAD I SHNDLR
	SDLD		/STORE FUNCTION WORD IN DATA REG.
	AND S70		/SDLD DOESN'T CLEAR AC
	TAD S6201	/ISOLATE FIELD OF XFER
	DCA TFLD
	TAD TFLD
	DCA TFLD2
	ISZ SHNDLR
	TAD I SHNDLR	/BUFFER ADDRESS
	DCA BPTR
	ISZ SHNDLR
	TAD I SHNDLR	/OS/8 RECORD #
	CLL RAL		/TIMES 2 FOR ABSOLUTE BLOCK
	DCA BLOCK
	ISZ SHNDLR
	CDF 0
	CIF ROMFLD	/ROM IS IN FIELD 7
	JMP I XF2SET	/INITIALIZE.

GET,	0
TFLD,	HLT		/ROUTINE TO LOAD DATA FROM BUFFER
	TAD I XPTR
	CIF ROMFLD
	JMP I GET

PUT,	0		/PUT DATA INTO BUFFER
TFLD2,	HLT
	DCA I XPTR
	CIF ROMFLD
	JMP I PUT

ERROR,	CLA CLL		/FORCE TURNAROUND AT RGO
	CIF ROMFLD
	ISZ TRYCNT	/TRIED 3 TIMES?
	JMP I XRGO
S6203,	CIF CDF 0
	JMP SEREX	/YES..FATAL EXIT

XRGO,	RGO
XF2SET,	F2SET

/EQUIVALENCES FOR HANDLER

	EQUTMP=7750
	BPTR=7751
	XPGCT=7752
	XPTR=7753
	XWCNT=7754
	WRQ=7724
WRQUAD,	0		/WRITE A 12 BIT TAPE WORD
	CIF ROMFLD
	JMP WRQ
CIFR,	CIF ROMFLD
	JMP I WRQUAD

RDQUAD,	0		/READ A 12 BIT DATA WORD
	SDSQ
	JMP .-1
	SDRD
	CIF ROMFLD
	JMP I RDQUAD

EQUFUN,	0		/EQUIVALENCE CHECKSUM
	CMA
	DCA EQUTMP
	TAD EQUTMP
	AND SCKSUM
	CIA
	CLL RAL
	TAD EQUTMP
	TAD SCKSUM
	DCA SCKSUM
	TAD EQUTMP
	CLL CMA
	CIF ROMFLD
	JMP I EQUFUN

SEXIT,	ISZ SHNDLR	/NORMAL EXIT
SEREX,	TAD SUNIT	/STOP THE DRIVE
	SDLC
	CLA CML RAR	/EXIT CONDITION IN BIT 0
EFLD,	HLT
	JMP I SHNDLR

TRYCNT,	0
SXUNIT,	0
SXFUN,	0
SCKSUM,	0
BLOCK,	0
SUNIT,	0

	*7420
	NOPUNCH
	*7400
	ENPUNCH
/BOOTSTRAP FOR 8K-ROM SYSTEM.

	CDF 0		/BOOTSTRAP TO MOVE FIELD 1
	TAD I ROM1	/CODE UP TO FIELD 1
	CDF 10
	DCA I ROM2
	ISZ ROM1
	NOP
	ISZ ROM2
	NOP
	ISZ ROMCT
	JMP 7400
	CIF CDF 0	/DONE
	SDLC		/STOP THE TAPE
	JMP I .+1
	7605		/START HER UP
ROM1,	7427		/FIELD 1 CODE GETS LOADED HERE
ROM2,	7647		/AND GOES UP HERE
ROMCT,	-130

	>
IFZERO ROM+LIST <XLIST>

$$$$